/********************************************************************************
 显示错题、错题排行、笔记、大家的笔记、收藏、收藏排行、查找的列表页显示
 ********************************************************************************/
function initList(rsp) {
    G_UserAction.loadObject();
    TestListUI(rsp);
}
/********************************************************************************
 函数名：listUI
 功能：显示试题列表
 输入参数:无
 返回值：无
 *******************************************************************************/
function TestListUI(rsp) {
    var _curPage = parseInt(G_Prg.getQueryString('page'));//强制转换成整型
    if (!_curPage) {
        _curPage = 1;
    }
    var _showTestCount = 50;
    var _totalPages = 0;
    var _show = [];
    var _allTest = '';
    var _fromUrl = G_Prg.getQueryString('fromUrl');
    var _appEName = G_Cookie.getAppEName();
    // var _selectPageHtml = G_Prg.$('selectPage').innerHTML;
    var _btnName = _setBtnName();
    _showListPage(rsp);

    /********************************************************************************
     函数名：_showListPage
     功能：显示试题列表
     输入参数:无
     *******************************************************************************/
    function _showListPage(rsp) {
        G_Prg.$('noTest').style.display = 'none';
        G_Prg.$('list').style.display = 'none'; //将列表页内容隐藏
        G_Prg.$('loadingDiv').style.display = 'block'; //显示加载圈

        document.title = '考试宝典-易混易错';
        G_Prg.$('back').innerHTML = '易混易错';
        G_Prg.$('di_').style.display = 'none';

        setTimeout(function () {
            _allTest = new TestListData(_curPage, _showTestCount,rsp);
            var arrAllTest = _allTest._getAllTest(); //获取当前页试题数组
            if(!arrAllTest){
            	window.location.reload();
            }
            var testCount = _allTest._getTestCount(); //获取试题总数
            _totalPages = parseInt(testCount / _showTestCount); //计算总页数
            if (testCount % _showTestCount !== 0) {
                _totalPages++;

            }
            if (G_Prg.checkApiPurview('', '易混易错', '') === 2 || G_Prg.checkApiPurview('', '易混易错', '') === 4) {
                _totalPages = _totalPages;
            } else {
                _totalPages = 1;
            }
            if (!testCount && _curPage > 1) {
                _curPage = 1;
                _showListPage();
                return;
            }
           
            G_Prg.$('noTest').style.display = 'none';
            //G_Prg.$('di_').style.display = 'block';
            G_Prg.$('di_').style.display = 'none';
            G_Prg.$('page2').style.display = 'block';
            _addList(arrAllTest); //动态生成列表
            _setClickEvent(arrAllTest); //初始化点击事件
            G_Prg.$('list').style.display = 'block'; //显示内容
            G_Prg.$('loadingDiv').style.display = "none"; //隐藏加载圈
        }, 100);
    }

    /********************************************************************************
     函数名：_addList
     功能：动态生成标签，将试题显示在页面
     输入参数: arrAllTest 当前页的试题数组
     返回值：无
     *******************************************************************************/
    function _addList(arrAllTest) {
        G_Prg.$('pageNum').innerHTML = _curPage + '/' + _totalPages;
        G_Prg.$('list').innerHTML = '';
        window.scrollTo(0, 0);
        var startIndex = (_curPage - 1) * _showTestCount + 1; //当前页题目的开始编号
        for (var i = 0; i < arrAllTest.length; i++) {
            var liTag = document.createElement('li');
            liTag.id = 'li' + i;
            var leftDiv = document.createElement('div');
            leftDiv.id = 'leftDiv' + i;
            leftDiv.className = 'left';
            var title = arrAllTest[i].Title;
            var titleSpan = document.createElement('span');
            titleSpan.id = 'title' + i;
            titleSpan.className = 'collection1';
            titleSpan.innerHTML = startIndex + '、' + title;
            leftDiv.appendChild(titleSpan);
            var doExamDiv = document.createElement('div');
            doExamDiv.id = 'doExam' + i;
            doExamDiv.innerHTML = '视频讲解';
            doExamDiv.className = 'doExamDiv';
            var upDivTag = document.createElement('div');
            upDivTag.className = 'mynotes_boxcon';
            upDivTag.appendChild(leftDiv);
            liTag.appendChild(upDivTag);
            liTag.appendChild(doExamDiv);
            (function (n) { //闭包指定点击事件
                upDivTag.onclick = function () {
                    if (_btnName['testInfo']) {
                        G_UserAction.addUserAction(_btnName['testInfo']);
                    }
                    if (G_Prg.checkApiPurview('', '易混易错', '') === 2 || G_Prg.checkApiPurview('', '易混易错', '') === 4) {
                        _showAnswer(n, arrAllTest);
                    } else {
                        if (n >= 1) {
                            G_Prg.confirm('您尚未开通该套餐，请先购买再获取更多试题视频！', function () {
                                window.location.href = '/recharge?fromUrl=yhyc';
                            });
                        } else {
                            _showAnswer(n, arrAllTest);
                        }
                    }
                };
                doExamDiv.onclick = function (event) {//进入答题按钮点击事件
                    var index = $(this).parent().index();
                    var cptID = arrAllTest[index].cptID;
                    if (G_Prg.checkApiPurview('', '易混易错', '') === 2 || G_Prg.checkApiPurview('', '易混易错', '') === 4) {
                        event = event ? event : window.event;
                        event.stopPropagation();
                        if (_btnName['curTest']) {
                            G_UserAction.addUserAction(_btnName['curTest']);
                        }
                        G_Prg.popMsg('答题后观看');
                        setTimeout(function () {
                            _curTestClick(arrAllTest[n].Parameter,cptID);
                        }, 750);
                    } else {
                        if (n >= 1) {
                        	
                            G_Prg.confirm('您尚未开通该套餐，请先购买再获取更多试题视频！', function () {
                                window.location.href = '/yhyc';
                            });
                        } else {
                            event = event ? event : window.event;
                            event.stopPropagation();
                            if (_btnName['curTest']) {
                                G_UserAction.addUserAction(_btnName['curTest']);
                            }
                            G_Prg.popMsg('答题后观看');
                            setTimeout(function () {
                                _curTestClick(arrAllTest[n].Parameter);
                            }, 750);
                        }
                    }

                };
            })(i);
            G_Prg.$('list').appendChild(liTag);
            startIndex++;
        }
    }

    /********************************************************************************
     函数名：_showAnswer
     功能：控制当前题目的答案及笔记内容的显示与隐藏
     输入参数: index 当前题的数组下标，arrAllTest 当前页的试题数组
     返回值：无
     *******************************************************************************/
    function _showAnswer(index, arrAllTest) {
        var answerSpan = G_Prg.$('answer' + index);
        if (!answerSpan) {
            G_Prg.$('doExam' + index).style.display = 'block';
            _createAnswer(index, arrAllTest);
            if (index === (arrAllTest.length - 1)) {
                window.scrollTo(0, document.body.scrollHeight);
            }
            return;
        }
        var userNote = arrAllTest[index].UserNoteContent;
        if (answerSpan.style.display === 'none') {
            _show[index] = 1;//标记当前题目为显示答案
            answerSpan.style.display = 'block';
            if (arrAllTest[index].Explain && arrAllTest[index].Explain !== '无') {
                G_Prg.$('explain' + index).style.display = 'block';
            }
            G_Prg.$('doExam' + index).style.display = 'block';
            if (index === (arrAllTest.length - 1)) {
                window.scrollTo(0, document.body.scrollHeight);
            }
            return;
        }
        _show[index] = 1;//标记当前题目为显示答案
        answerSpan.style.display = 'none';
        if (arrAllTest[index].Explain && arrAllTest[index].Explain !== '无') {
            G_Prg.$('explain' + index).style.display = 'none';
        }
        G_Prg.$('doExam' + index).style.display = 'none';
    }

    /********************************************************************************
     函数名：_createAnswer
     功能：动态生成当前题目的答案及笔记内容
     输入参数: index 当前题的数组下标，arrAllTest 当前页的试题数组
     返回值：无
     *******************************************************************************/
    function _createAnswer(index, arrAllTest) {
        _show[index] = 1;//标记当前题目为显示答案
        var answer = arrAllTest[index].Answer;
        var answerSpan = document.createElement('span');
        answerSpan.id = 'answer' + index;
        answerSpan.className = 'text_1';
        answerSpan.innerHTML = '答案：' + answer;
        var leftDiv = G_Prg.$('leftDiv' + index);
        leftDiv.appendChild(answerSpan);
        var explain = arrAllTest[index].Explain;
        if (explain && explain !== '无') {
            var explainSpan = document.createElement('span');
            explainSpan.id = 'explain' + index;
            explainSpan.className = 'text_1';
            explainSpan.innerHTML = '解析：' + explain;
            leftDiv.appendChild(explainSpan);
        }
    }

    /********************************************************************************
     函数名：_curTestClick
     功能：当前试题点击事件
     输入参数: curTestNO 当前试题编号
     返回值：无
     *******************************************************************************/
    function _curTestClick(allTestID,cptID) {
         G_Cookie.setCptID(cptID);
        window.location.href = '/answerExam?fromUrl=yhyc&allTestID=' + allTestID + '&page=' + _curPage;
    }

    /********************************************************************************
     函数名：_setClickEvent
     功能：初始化点击事件
     输入参数: 无
     返回值：无
     *******************************************************************************/
    function _setClickEvent(arrAllTest) {
        G_Prg.$('movePre').onclick = function () {
            if (_btnName['movePre']) {
                G_UserAction.addUserAction(_btnName['movePre']);
            }
            _preClick();
        };
        G_Prg.$('moveNext').onclick = function () {
            if (_btnName['moveNext']) {
                G_UserAction.addUserAction(_btnName['moveNext']);
            }
            _nextClick();
        };
        G_Prg.$('browserCurPage').onclick = function () {
            if (_btnName['browserCurPage']) {
                G_UserAction.addUserAction(_btnName['browserCurPage']);
            }
            _curTestClick(arrAllTest[0].Parameter);
        };
        G_Prg.$('pageNum').onclick = function () {
            if (_totalPages > 1) {
                _showSelectPage();
            }
        }
        G_Prg.$('back').onclick = function () {
            if (_btnName['backBtn']) {
                G_UserAction.addUserAction(_btnName['backBtn']);
            }
            _backClick();
        };
    }

    function _showSelectPage() {
        G_Prg.$('selectPage').innerHTML = '';
        G_Prg.htmlContent('100%', '100%', '选择页数', '', true);//弹出窗口，把html移动到弹出框，动态添加
        G_Prg.$('hcdialogBody').innerHTML = _selectPageHtml;
        G_Prg.$('hcdvMsgBackBtn').style.display = 'none';
        G_Prg.$('hcdvMsgClose').style.display = 'block';
        G_Prg.$('pageContent').innerHTML = '';
        for (var i = 1; i <= _totalPages; i++) {
            var divTag = document.createElement('div');
            divTag.id = i;
            divTag.innerHTML = i;
            divTag.className = 'pageStyle';
            if (i === _curPage) {
                divTag.style.border = '1px solid #4093DA';
            }
            divTag.onclick = function () {
                document.body.style.overflow = 'auto';
                G_DialogContent.dispose();
                _curPage = parseInt(this.id);
                _showListPage();
            }
            G_Prg.$('pageContent').appendChild(divTag);
        }
        var kbDivTag = document.createElement('div');
        kbDivTag.style.height = '30px';
        kbDivTag.style.width = '100%';
        kbDivTag.style.float = 'left';
        G_Prg.$('pageContent').appendChild(kbDivTag);
    }

    /********************************************************************************
     函数名：_preClick
     功能：上一页点击事件
     输入参数: 无
     返回值：无
     *******************************************************************************/
    function _preClick() {
        if (_curPage === 1) {
            G_Prg.alert('已经是第一页了');
            return;
        }
        _curPage = _curPage - 1;
        _showListPage();
    }

    /********************************************************************************
     函数名：_nextClick
     功能：下一页点击事件
     输入参数: 无
     返回值：无
     *******************************************************************************/
    function _nextClick() {
        if (_curPage === _totalPages) {
            if ((G_Prg.checkApiPurview('', '易混易错', '') === 2 || G_Prg.checkApiPurview('', '易混易错', '') === 4)) {
                G_Prg.alert('已经是最后一页了');
                return;
            } else {
                G_Prg.confirm('您尚未开通该套餐，请先购买再获取更多视频！', function () {
                    window.location.href = '/recharge?fromUrl=yhyc';
                });
                return;
            }
        }
        _curPage = _curPage + 1;
        _showListPage();
    }

    /********************************************************************************
     函数名：_backClick()
     功能：返回按钮点击事件
     输入参数：无
     返回值：无
     *******************************************************************************/
    function _backClick() {
        if (!_fromUrl || _fromUrl === 'answerExam' || _fromUrl === 'onlineVideo') {
            window.location.href = '/doExam-index';
            return;
        }
        window.location.href = '/' + _fromUrl + '?fromUrl=yhyc';
    }

    /********************************************************************************
     函数名：_setBtnName()
     功能：根据type生成不同btnArr伪哈希表
     输入参数：无
     *******************************************************************************/
    function _setBtnName() {
        var btnArr = new Object();
        btnArr['backBtn'] = 'backFromWrongListBtn';
        btnArr['movePre'] = 'easyErrorPrePageBtn';
        btnArr['moveNext'] = 'easyErrorNextPageBtn';
        btnArr['browserCurPage'] = 'viewThisEasyErrorPageBtn';
        btnArr['curTest'] = 'selEasyErrorTestMenu';
        btnArr['testInfo'] = 'easyErrorTestInfoBtn';
        return btnArr;
    }
}